package com.slj.service;

import com.slj.entity.Products;

import java.util.List;

/**
        * 商品服务接口
 * 定义所有与商品相关的业务操作
 */
public interface ProductsService {

    /**
            * 根据主键删除商品
     * @param productId 商品ID
     * @return 影响的行数
     */
    int deleteByPrimaryKey(Integer productId);

    /**
            * 插入商品记录（所有字段）
            * @param record 商品实体对象
     * @return 影响的行数
     */
    int insert(Products record);

    /**
            * 选择性插入商品记录（只插入非空字段）
            * @param record 商品实体对象
     * @return 影响的行数
     */
    int insertSelective(Products record);

    /**
            * 根据主键查询商品
     * @param productId 商品ID
     * @return 商品实体对象
     */
    Products selectByPrimaryKey(Integer productId);

    /**
            * 根据主键选择性更新商品（只更新非空字段）
            * @param record 商品实体对象
     * @return 影响的行数
     */
    int updateByPrimaryKeySelective(Products record);

    /**
            * 根据主键更新商品（更新所有字段）
            * @param record 商品实体对象
     * @return 影响的行数
     */
    int updateByPrimaryKey(Products record);

    /**
            * 查询所有商品
     * @return 商品列表
     */
    List<Products> selectAll();

    /**
            * 根据商品名称模糊查询商品
     * @param productName 商品名称（支持模糊查询）
            * @return 符合条件的商品列表
     */
    List<Products> selectByProductName(String productName);

    /**
            * 切换商品状态（上架/下架）
            * @param productId 商品ID
     * @return 影响的行数
     */
    int toggleStatus(Integer productId);
}